iT邦幫忙

0

D18|DeFi「核准/授權」風險:ERC-20 allowance、無限授權與 Permit2

  • 分享至 

  • xImage
  •  

DeFi 的去中心化設計往往要依賴大量的授權交易,而授權過程中產生的風險,尤其是在 ERC-20 代幣標準中,正是常見的漏洞來源之一。今天我們將深度探討 DeFi 中的「授權」機制,理解如何通過設計與監控降低風險,避免無限授權和授權錯誤引發的資金損失。


一、ERC-20 Allowance 機制:授權 vs 轉帳

ERC-20 標準中的 approve 允許一個地址(spender)代表其他地址(owner)進行資產支配。這種授權機制讓去中心化應用(DApp)能夠無需用戶每次確認,都能在指定範圍內自動執行交易。但這也使得攻擊者有機會發動授權競態攻擊(front-run attack)。

approvetransferFrom

  • approve(spender, amount):發送者批准第三方可以花費其 amount 數量的代幣。
  • transferFrom(owner, spender, amount):實際執行轉帳操作,由 spender 代為執行的操作。

授權機制的問題:

  1. 無限授權風險:某些情況下,合約會授予對方「無限」的代幣使用權(例如 approve(spender, uint256(-1))),一旦攻擊者獲得對該合約的控制,便可無限制提取資金。
  2. 競態條件:若先更新授權,再執行 transferFrom 操作,攻擊者可以操控交易順序,先執行 transferFrom,再修改授權,從而達到非法提款。

二、無限授權風險與應對

無限授權的問題最常出現在用戶對第三方合約進行授權時。這樣的做法看似方便,但也可能為攻擊者提供了大量可利用的漏洞。

如何減少無限授權風險?

  1. 限額授權:將授權額度設置為實際需求量,避免出現無限額度的授權。每次進行授權時,設置一個具體的授權金額,並定期檢查與更新這些授權。
  2. 使用 increaseAllowancedecreaseAllowance:這兩個方法能讓用戶動態調整授權額度,而不是直接修改授權金額。這樣做可以降低競態攻擊的風險。
  3. 撤銷授權:撤銷不再使用的授權,尤其是對不熟悉的合約或應用程序的授權。這是減少無限授權風險的最簡單有效方法。

三、Permit2:改進的授權機制

Permit2 是一種改進版的 ERC-20 授權方式,旨在提供更靈活、更安全的授權操作。它由 Uniswap 團隊提出,改進了授權過程中的效率和安全性,特別是在去中心化交易所(DEX)與智能合約的使用中。

Permit2 的優勢:

  • 減少交易次數:用戶無需再次發送交易來授權,Permit2 可在單一交易中完成授權與轉帳操作,這樣減少了前置交易的需求與用戶的交易成本。
  • 時間限制的授權Permit2 使得授權具有時間有效性,能夠設置授權的到期時間,進一步降低長期授權所帶來的風險。
  • 精細化授權控制Permit2 不僅允許授權代幣轉移,還能進行多種類型的控制,例如針對特定合約或交易條件設置授權限制,從而加強了安全性。

四、DeFi 常見授權風險與防範建議

DeFi 生態系統的資金流動頻繁,授權機制是其中的一大風險點。以下是一些常見授權風險及防範建議:

1. 授權暴露風險

  • 風險:許多 DeFi 合約允許無限額度的授權,這使得即使合約漏洞或私鑰外洩,也可能造成資金長期被提取。
  • 建議:定期檢查和撤銷不必要的授權,特別是對不熟悉的第三方合約或 DApp。使用如 Revoke.cash 等工具檢視授權情況。

2. 合約漏洞風險

  • 風險:如果智能合約本身存在漏洞,攻擊者可能利用授權操作提取資金,尤其是當授權與交易存在競態條件時。
  • 建議:選擇經過審計的合約,並避免將大量資金長期存放在同一合約中。對智能合約進行定期的安全審計和漏洞掃描。

3. 使用公共地址/合約授權

  • 風險:將資金授權給公共合約或地址,這可能會被濫用。
  • 建議:對於高風險交易,應使用多簽名合約冷錢包來進行資金管理,並設定具體的授權限制。

小結

DeFi 的核心在於開放性和去中心化,但也伴隨著較高的授權風險。approve 機制的正確使用與風險控制是每個用戶的責任。為了減少無限授權帶來的風險,使用限額授權、定期撤銷授權和選擇更加安全的授權方式(如 Permit2)是最有效的防範手段。通過細緻的授權控制與合約審查,能有效減少被利用的風險。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言